from pydantic import BaseModel

from typing import List, Optional


class ParamWeights(BaseModel):
    range_: Optional[float] = None
    recoil: Optional[float] = None
    speed: Optional[float] = None
    stability: Optional[float] = None
    hipAccuracy: Optional[float] = None


class AddValues(BaseModel):
    range_: Optional[float] = None
    recoil: Optional[float] = None
    speed: Optional[float] = None
    stability: Optional[float] = None
    hipAccuracy: Optional[float] = None


class PriceRange(BaseModel):
    min_: Optional[int] = None
    max_: Optional[int] = None

class ParamRequires(BaseModel):
    gun: str
    param_weights: ParamWeights = None
    add_values: AddValues = None
    must_have_part: List[str] = []
    must_not_have_part: List[str] = []
    must_have_accessory: List[str] = []
    must_not_have_accessory: List[str] = []
    price_range: PriceRange = None
